package kr.hkit.powerjava.chapter24.work2.service;

import java.util.Scanner;

import kr.hkit.powerjava.chapter24.work2.dao.InterfaceDao;

public abstract class ServiceItem<T> {

	protected InterfaceDao<T> dao;
	protected Scanner sc;
	
	public ServiceItem(InterfaceDao<T> dao, Scanner sc) {
		this.dao = dao;
		this.sc = sc;
		init();
	}
	
	protected void init(){
		dao.loadFile();
		prnMenu();
	}
	
	public void prnMenu(){
		int res = 0;
		T item = null;
		
		do {
			System.out.print("1. 입력\n2. 삭제\n3. 수정\n4. 검색\n5. 리스트보기\n6. 종료\n");
			res = sc.nextInt();
			switch (res) {
			
			case 1:// 학생정보입력
				item = inputItemInfo(true);
				dao.insertItem(item);
				break;
				
			case 2:
				//리스트를 보여주고 삭제할 번호를 입력받음
				dao.prnItemList(null);
				System.out.print("삭제할 정보를 입력하세요: ");
				item = inputItemInfo(false);
				dao.deleteItem(item);
				break;
				
			case 3:
				//리스트를 보여주고 수정할 학생정보를 입력받아
				dao.prnItemList(null);
				item = inputItemInfo(true);
				dao.updateItem(item);
				break;
				
			case 4:
				item = inputItemInfo(false);
				try{
					item = dao.searchItem(item);
					System.out.println(item);
				} catch(ArrayIndexOutOfBoundsException e){
					System.out.println("해당 정보 없음");
				}
				break;
				
			case 5:
				prnSubMenu();
				break;
				
			case 6:
				dao.saveFile();
				sc.close();
				System.exit(0);
				break;
			default:
				res = 5;
			}
		} while (res <= 6);
	}
	
	public abstract T inputItemInfo(boolean gubun);
	public abstract void prnSubMenu();
}
